昨天看到了AWS MLOps Framework的兩個方案的架構圖,以及解決方案簡介之後,今天想討論的是成本(該解決方案的費用)、哪些工具可以用來估算費用、費用注意事項、設計架構注意事項等等。
假設在US East (N. Virginia) Region發佈這個服務的方案一,也就是單帳號部署版本,預估每個月會花費60.93美元在上面。計算的費用假設一個小時進行一次即時的ML推理服務(model serving),則每個月花費約48.24 美元。(根據2021/09/12的資料。)
且假設每天維護 100 個pipeline運行,每秒運行一個推理請求,模型大小使用了 100 MB 的存儲,並且該解決方案總共使用 100 GB 的存儲大小。
在這個解決方案當中可以看到:
AWS 服務名稱 | 分類 | 費用 |
---|---|---|
Amazon API Gateway | 基礎架構 | $4.55 |
AWS Lambda | 基礎架構 | $0.80 |
Amazon SageMaker | ML | $48.24 |
Amazon S3 | 資料儲存 | $2.30 |
AWS CodePipeline | 基礎架構 | $2.00 |
Amazon ECR | 基礎架構 | $1.44 |
AWS CodeBuild | 基礎架構 | $1.60 |
總額 | ~$60.93/月(美金) |
一般來說當列出第一版本計算的價格表之後,可以拿這個估算版本,和一起維護ML專案的同事們,從技術面和商業面討論:這些對於資料量的假設是否合理,對於使用者呼叫服務的使用量是否跟我們的使用者行為一致,需要往上增或是往下降這個估計使用額度。以及在ML的專案上面,這些假設是否足夠,有沒有漏掉沒有預估的地方。
有時候一個專案的估算很依靠經驗值,每間公司的商業模式也不盡相同。透過和同事的討論,讓大家對於專案的成本和透明度了解更多,也讓這些假設更貼近公司的案例。或者,參考網路上其他的解決方案,和其估算成本的方式,這也是為什麼在這邊跟大家分享這個案例。
可以使用AWS calculater來計算,所有的計算幣值都以美金為單位。在費用的計算頁面,不需要AWS帳號登入,直接點進去就可以計算。通常在討論費用估算的時候,會用每月成本估算。大部分的計算會根據業務的所在地的區域(region)計算,同時也會看要使用的服務有沒有在該區域支援,如果沒有的話是不是要跨區域使用某些服務等等。
如果對於每一個服務的價錢計算細節想要有更深入的了解,通常到該服務的價錢頁面,就可以看到定價細節,甚至包含幾個計算範例讓你參考可以怎麼計算。這樣就已經足夠完成大約的估算了。
還有一些魔鬼的細節,也建議大家有空可以點定價假設和變化或是FAQ頁面看一看。裡面談到幾個關於價錢估算的常見問題,或是大家在估算的時候常常會沒有注意到的細節。像是:使用的地區、價格變動、稅務、計算的時間區間、折扣與促銷、計費週期、分服務層級定價、以秒計費或分鐘小時計費、是否有使用到第三方費用、匯率等等。或是計算範例看一下常見的AWS或是混合雲的計算範例。
預設的pipeline包含了部署和共享模型,若需要增加訓練模型的邏輯,需要從中修改。在Pipeline的開發上,會需要兩個關鍵字:
值得注意的是:須將適當的 IAM 權限傳遞給 mlopscloudformationrole,當 AWS CloudFormation 使用這個角色來啟用管道時,它有權配置必要的資源。例如,如果您的自定義管道創建 Lambda 函數,則 mlopscloudformationrole 必須具有 lambda:CreateFunction 權限才能預置 Lambda 函數。
開發的過程,呼叫/pipelinestatus則可以取得pipeline的現況。幫助追蹤目前的事件狀態。
假若要部署在預設的區域之外,先到AWS 區域服務列表確認該服務在你想部署的區域是有支援的。
Reference
[1]. AWS 價格計算機用戶指南
[2]. AWS MLOps Framework